package com.xbongbong.saas.model;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.saas.domain.entity.CommunicatePlanUserEntity;
import com.xbongbong.saas.domain.entity.UserTeamEntity;

import java.util.List;
import java.util.Map;

/**
 * @author long.rao
 * @version v1.0
 * @date 2019/2/1 10:59
 * @since v1.0
 */
public interface CommunicatePlanUserModel extends IModel<CommunicatePlanUserEntity> {
    /**
     * 访客计划执行人数据插入
     * @param entity 访客计划执行人实体
     * @throws XbbException 异常
     * @return Integer
     * @author long.rao
     * @date 2019-02-01 15:31
     */
    @Override
    Integer insert(CommunicatePlanUserEntity entity) throws XbbException;
    /**
     * 访客计划执行人数据更新
     * @param entity 访客计划执行人实体
     * @author Jian.Wang
     * @date 2019/1/23 20:27
     * @throws XbbException 异常
     * @return Integer
     */
    @Override
    Integer update(CommunicatePlanUserEntity entity) throws XbbException;
    /**
     * 访客计划执行人数据查询多个
     * @param param 参数
     * @author long.rao
     * @date 2019-02-01 15:31
     * @return List<CommunicatePlanUserEntity>
     */
    @Override
    List<CommunicatePlanUserEntity> findEntitys(Map<String, Object> param);

    /**
     * 查询协同团队基础列表
     * @param map 参数
     * @return 团队
     */
    List<UserTeamEntity> findBaseEntitys(Map<String, Object> map);

    /**
     * 访客计划执行人数据查询条数
     * @param param 参数
     * @return Integer
     * @author long.rao
     * @date 2019-02-01 15:31
     */
    @Override
    Integer getEntitysCount(Map<String, Object> param);

    /**
     * 根据可见员工获取访客计划idList
     * @param corpid 公司id
     * @param userIdList 员工
     * @return 访客计划idList
     */
    List<Object> getPlanList(String corpid, List<String> userIdList);

    /**
     * 获取协同团队的业务数据
     * @param corpid 公司id
     * @param userId 用户id
     * @return List<Long>
     */
    List<Long> getDataIdList(String corpid, List<String> userId);

    /**
     * 批量更新访客计划负责人某公司某用户的姓名和头像
     */
    Integer dataConsistencyUpdateUser(String corpid, String userId, String userName, String userAvatar);

    /**
     * 批量插入
     * @param contactUserEntityList
     * @return
     * @throws
     * @author xingxing.xiao
     * @date 2019/09/11 09:34
     */
    void insertBatch(List<CommunicatePlanUserEntity> contactUserEntityList) throws XbbException;
}
